create database Student
on(
	name='Student',
	filename='E:\test\Student.mdf',
	size=5,
	maxsize=50,
	filegrowth=10%
)
log on(
	name='Student_log',
	filename='E:\test\Student_log.ldf',
	size=5,
	maxsize=50,
	filegrowth=10%
)
use Student
go
create table StuInfo
(
	stuNO varchar(5) primary key,
	stuName nvarchar(10) not null,
	stuAge int not null,
	stuAddress nvarchar(15) not null,
	stuSeat varchar(3) not null,
	stuSex char(1) not null
)
create table ExamInfo
(
	examNO int primary key identity(1,1),
	stuNO varchar(5) references StuInfo(stuNO),
	writtenExam varchar(3) not null,
	labExam varchar(3) not null
)
insert into StuInfo values ('s2501','张三',20,'福建南平',1,1),
('s2502','李四',18,'福建福州',2,0),('s2503','马五',22,'福建龙岩',3,1),
('s2504','欧五',21,'福建漳州',4,0),('s2505','梅六',20,'福建三明',5,1),
('s2506','陈七',19,'福建厦门',6,1),('s2507','叶九',20,'福建宁德',7,0)
insert into ExamInfo (writtenExam,labExam) values (50,70),
(60,65),(86,85),(40,80),(70,90),(85,90)
alter table ExamInfo add constraint FK_StuInfo_ExamInfo foreign key(stuNO) references StuInfo(StuNO) 
--1.查询学生信息表（stuinfo）中所有列信息，给每列取上中文名称

	select * from StuInfo
--2.查询学生信息表（stuinfo）中的姓名，年龄和地址三列的信息

	select stuName,stuAge,stuAddress from StuInfo
--3.查询学生分数表（stuexam）中的学号，笔试和机试三列的信息，并为这三列取中文名字 
--注意：要用三种方法

	select 学号=examNO,笔试=writtenExam,机试=labExam from ExamInfo
	select examNO 学号,writtenExam 笔试,labExam 机试 from ExamInfo
	select examNO as 学号,writtenExam as 笔试,labExam as 机试 from ExamInfo

--4.查询学生信息表（stuInfo）中的学号，姓名，地址，以及将：姓名+@+地址 组成新列 “邮箱”
	select 学号=stuNO,姓名=stuName,地址=stuAddress,stuName+'@'+stuAddress as 姓名@地址 from StuInfo

--5.查询学生分数表（stuexam）中的学生的学号，笔试，机试以及总分（笔试+机试）这四列的信息
	select stuNO 学号, writtenExam 笔试 , labExam 机试 , writtenExam+labExam as '机试+笔试'  from ExamInfo

--6.查询学生信息表（stuInfo）中学生来自哪几个地方 
	select stuAddress from StuInfo

--7.查询学生信息表（stuInfo）中学生有哪几种年龄，并为该列取对应的中文列名'所有年龄'
	select distinct stuAge 所有年龄 from StuInfo

--8.查询学生信息表（stuInfo）中前3行记录 
	select top 3 * from StuInfo order by stuNO ASC

--9.查询学生信息表（stuInfo）中前4个学生的姓名和座位号
	select top 4 stuName,stuSeat from StuInfo order by stuNO ASC

--10.查询学生信息表（stuInfo）中一半学生的信息
	select top 50 percent * from StuInfo

--11.将地址是湖北武汉，年龄是20的学生的所有信息查询出来
	select * from StuInfo where stuAddress='福建南平'and stuAge=20

--12.将机试成绩在60-80之间的信息查询出来，并按照机试成绩降序排列
	select * from ExamInfo where labExam>60 and labExam<80 order by labExam DESC

--13.查询来自湖北武汉或者湖南长沙的学生的所有信息（用两种方法实现，提示；or和in）
	select * from StuInfo where stuAddress='福建南平' or stuAddress='福建福州'
	select * from StuInfo where stuAddress in('福建南平','福建福州')

--14.查询出笔试成绩不在70-90之间的信息,并按照笔试成绩升序排列
	select * from ExamInfo  where labExam<70 or labExam >90 order by labExam ASC

--15.查询年龄没有写的学生所有信息
	select * from StuInfo where stuAge is  null

--16.查询年龄写了的学生所有信息
	select * from StuInfo where stuAge is not null
		
--17.查询姓张的学生信息
	select * from StuInfo where stuName like '张%'

--18.查询学生地址中有‘湖’字的信息
	select * from StuInfo where stuAddress like '福%'

--19.查询姓张但名为一个字的学生信息
	select * from StuInfo where stuName like '张_'

--20.查询姓名中第三个字为‘俊’的学生的信息，‘俊’后面有多少个字不限制
	select * from StuInfo where stuName like '__俊%'

--21.按学生的年龄降序显示所有学生信息
	select * from StuInfo where stuAge is not null order by stuAge DESC 

--22.按学生的年龄降序和座位号升序来显示所有学生的信息
	select * from StuInfo order by stuAge DESC,stuNO ASC
	
--23显示笔试第一名的学生的考试号，学号，笔试成绩和机试成绩
	select  top 1* from ExamInfo order by labExam DESC

--24.显示机试倒数第一名的学生的考试号，学号，笔试成绩和机试成绩
	select  top 1 * from ExamInfo order by writtenExam ASC
select * from ExamInfo
select * from StuInfo    
